home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 June / PCpro_2005_06.ISO / files / opensource / amc / amc_install.exe / {app} / Scripts / Image.be.ifs < prev    next >
Encoding:
Text File  |  2005-03-13  |  7.5 KB  |  239 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Antoine Potten
  8. Title=image.be
  9. Description=image Mediastores (image.be) import
  10. Site=http://www.image.be
  11. Language=FR
  12. Version=
  13. Requires=3.5.0
  14. Comments=
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program ImageBe;
  23.  
  24. const
  25.   LargePicture = False; // set it to True to import large picture
  26.  
  27. var
  28.   MovieName: string;
  29.  
  30. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  31. var
  32.   i: Integer;
  33. begin
  34.   result := -1;
  35.   if StartAt < 0 then
  36.     StartAt := 0;
  37.   for i := StartAt to List.Count-1 do
  38.     if Pos(Pattern, List.GetString(i)) <> 0 then
  39.     begin
  40.       result := i;
  41.       Break;
  42.     end;
  43. end;
  44.  
  45. procedure AnalyzePage(Address: string);
  46. var
  47.   Page, Line: string;
  48.   BeginPos, EndPos, MovCount: Integer;
  49. begin
  50.   Page := GetPage(Address);
  51.   BeginPos := Pos('Aucun rΘsultat trouvΘ', Page);
  52.   if BeginPos > 0 then
  53.   begin
  54.     ShowMessage('No movie found');
  55.     Exit;
  56.   end;
  57.   BeginPos := Pos('<u>Objet de votre recherche</u>', Page);
  58.   EndPos := Pos('<table width="92%"', Page);
  59.   if (BeginPos > 0) and (EndPos > 0) then
  60.   begin
  61.     PickTreeClear;
  62.     Page := Copy(Page, BeginPos, EndPos - BeginPos);
  63.     EndPos := Pos('<table', Page);
  64.     Line := Copy(Page, 1, EndPos-1);
  65.     HTMLRemoveTags(Line);
  66.     HTMLDecode(Line);
  67.     PickTreeAdd(Line, '');
  68.     MovCount := 0;
  69.     repeat
  70.       BeginPos := Pos('<a href=''FicheFilmSY.asp', Page);
  71.       if BeginPos > 0 then
  72.       begin
  73.         Delete(Page, 1, BeginPos-1);
  74.         EndPos := Pos(''' class', Page);
  75.         Address := 'http://www.image.be/' + Copy(Page, 10, EndPos - 10);
  76.         Delete(Page, 1, EndPos+14);
  77.         EndPos := Pos('<br>', Page);
  78.         Line := Copy(Page, 1, EndPos-1);
  79.         HTMLRemoveTags(Line);
  80.         PickTreeAdd(Line, Address);
  81.         MovCount := MovCount+1;
  82.       end;
  83.     until BeginPos = 0;
  84.     if (MovCount = 1) then
  85.       AnalyzeMoviePage(Address)
  86.     else
  87.      if PickTreeExec(Address) then
  88.        AnalyzeMoviePage(Address);
  89.   end;
  90. end;
  91.  
  92. procedure AnalyzeMoviePage(Address: string);
  93. var
  94.   Line, Value: string;
  95.   BeginPos, EndPos, LineNr, IntValue: Integer;
  96.   Page: TStringList;
  97. begin
  98.   Page := TStringList.Create;
  99.   Line := GetPage(Address);
  100.   BeginPos := Pos('<table cellspacing="6" cellpadding="0" border="0">', Line);
  101.   EndPos := Pos('<table border="0" cellspacing="0" cellpadding="0" width="90%">', Line);
  102.   if (BeginPos > 0) and (EndPos > 0) then
  103.   begin
  104.     Page.Text := Copy(Line, BeginPos, EndPos - BeginPos);
  105.     Line := Trim(Page.GetString(1));
  106.     BeginPos := Pos('4>', Line)+2;
  107.     EndPos := Pos('</font>', Line);
  108.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  109.     if Pos('class=yellowlight2', Line) > 0 then
  110.     begin
  111.       SetField(fieldTranslatedTitle, Value);
  112.       Delete(Line, 1, EndPos);
  113.       BeginPos := Pos('<i> (', Line) + 5;
  114.       EndPos := Pos(')</i>', Line);
  115.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  116.       SetField(fieldOriginalTitle, Value);
  117.       Delete(Line, 1, EndPos);
  118.     end
  119.     else
  120.     begin
  121.       SetField(fieldOriginalTitle, Value);
  122.       Delete(Line, 1, EndPos);
  123.     end;
  124.     BeginPos := Pos('<i>(', Line) + 4;
  125.     Delete(Line, 1, BeginPos-1);
  126.     EndPos := Pos(')</i>', Line);
  127.     Value := Copy(Line, 1, EndPos-1);
  128.     SetField(fieldYear, Value);
  129.     LineNr := FindLine('<img src="Movies/', Page, 0);
  130.     if LineNr > -1 then
  131.     begin
  132.       Line := Page.GetString(LineNr);
  133.       BeginPos := Pos('<img src=', Line)+10;
  134.       EndPos := Pos('" border=', Line);
  135.       Value := 'http://www.image.be/' + Copy(Line, BeginPos, EndPos - BeginPos);
  136.       if LargePicture then
  137.         Value := StringReplace(Value, '/jm.', '/jh.');
  138.       GetPicture(Value);
  139.     end;
  140.     LineNr := FindLine('<b>Genres:', Page, LineNr);
  141.     if LineNr = -1 then
  142.       LineNr := FindLine('<b>Genre:', Page, LineNr);
  143.     if LineNr > -1 then
  144.     begin
  145.       Line := Page.GetString(LineNr);
  146.       BeginPos := Pos('</b>', Line);
  147.       EndPos := Pos('<font class=white2>', Line);
  148.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  149.       HTMLRemoveTags(Value);
  150.       SetField(fieldCategory, Value);
  151.     end;
  152.     LineNr := FindLine('<b>Durée:', Page, LineNr);
  153.     if LineNr > -1 then
  154.     begin
  155.       Line := Trim(Page.GetString(LineNr+2));
  156.       EndPos := Pos(' ', Line);
  157.       Value := Copy(Line, 1, EndPos-1);
  158.       SetField(fieldLength, Value);
  159.     end;
  160.     LineNr := FindLine('<b>Studio:', Page, LineNr);
  161.     if LineNr = 0 then
  162.       LineNr := FindLine('<b>Studios:', Page, LineNr);
  163.     if LineNr > -1 then
  164.     begin
  165.       Line := Trim(Page.GetString(LineNr));
  166.       BeginPos := Pos('">', Line) + 2;
  167.       Value := Copy(Line, BeginPos, Length(Line));
  168.       SetField(fieldProducer, Value);
  169.     end;
  170.     LineNr := FindLine('<b>RΘalisateur:', Page, LineNr);
  171.     if LineNr = -1 then
  172.       LineNr := FindLine('<b>RΘalisateurs:', Page, LineNr);
  173.     if LineNr > -1 then
  174.     begin
  175.       Line := Page.GetString(LineNr);
  176.       BeginPos := Pos('<font', Line);
  177.       Value := Copy(Line, BeginPos, Length(Line));
  178.       HTMLRemoveTags(Value);
  179.       SetField(fieldDirector, Trim(Value));
  180.     end;
  181.     LineNr := FindLine('<b>Avec:', Page, LineNr);
  182.     if LineNr = -1 then
  183.       LineNr := FindLine('<b>Avec les voix de:', Page, LineNr);
  184.     if LineNr > -1 then
  185.     begin
  186.       Line := Page.GetString(LineNr);
  187.       BeginPos := Pos('</b>', Line);
  188.       Value := Copy(Line, BeginPos, Length(Line));
  189.       HTMLRemoveTags(Value);
  190.       HTMLDecode(Value);
  191.       SetField(fieldActors, Trim(Value));
  192.     end;
  193.     LineNr := FindLine('<div align="justify">', Page, LineNr);
  194.     if LineNr > -1 then
  195.     begin
  196.       Value := '';
  197.       repeat
  198.         Line := Page.GetString(LineNr);
  199.         LineNr := LineNr+1;
  200.         BeginPos := Pos('</div>', Line);
  201.         HTMLRemoveTags(Line);
  202.         Value := Value + Trim(Line) + #13#10;
  203.       until BeginPos <> 0;
  204.       Value := StringReplace(Value, '£', 'oe');
  205.       Value := StringReplace(Value, 'à', '...');
  206.       SetField(fieldDescription, Value);
  207.     end;
  208.     LineNr := FindLine('<td width="145" valign="middle"><font class=black2>', Page, LineNr);
  209.     if LineNr > -1 then
  210.     begin
  211.       Line := Page.GetString(LineNr);
  212.       BeginPos := Pos('0000">', Line) + 6;
  213.       EndPos := Pos('</font>', Line);
  214.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  215.       IntValue := StrToInt(StrGet(Value, 1), 0) * 2;
  216.       if Length(Value) > 2 then
  217.         if StrToInt(StrGet(Value, 3), 0) >= 5 then
  218.           IntValue := IntValue + 1;
  219.       SetField(fieldRating, IntToStr(IntValue));
  220.     end;
  221.   end;
  222.   Page.Free;
  223.   //DisplayResults;
  224. end;
  225.  
  226. begin
  227.   if CheckVersion(3,5,0) then
  228.   begin
  229.     MovieName := GetField(fieldOriginalTitle);
  230.     if MovieName = '' then
  231.       MovieName := GetField(fieldTranslatedTitle);
  232.     if Input('image.be import', 'Entrez le titre du film :', MovieName) then
  233.     begin
  234.       AnalyzePage('http://www.image.be/rΘsultats.asp?recherche=' + UrlEncode(MovieName) + '&Type=Film');
  235.     end;
  236.   end else
  237.   ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  238. end.
  239.